package com.example.iitematicviewer.util;

import com.example.iitematicviewer.constant.ExceptionConstant;
import com.example.iitematicviewer.mapper.ErrorDao;
import com.example.iitematicviewer.vo.ErrorVO;
import com.example.iitematicviewer.vo.ResultVO;
import com.sun.org.apache.bcel.internal.ExceptionConst;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 错误日志业务层
 */
@Service
public class ErrorService {

    @Autowired
    private ErrorDao dao;

    /**
     * 错误日志新增方法
     * @param errorVO
     */
    public void errorinsert(ErrorVO errorVO){
        dao.insert(errorVO);
    }

    /**
     * 将返回值类转为错误类
     * @param resultVO
     * @return
     */
    public ErrorVO errorVO(ResultVO resultVO,String type,String address,String param){
        String code = resultVO.getCode();
        ErrorVO error = null;
        //状态码
        if (StringUtils.isNotEmpty(code)) {
            error = new ErrorVO();
            error.setSucessstate(code);
        }
        else{
            return error;
        }
        //日志类型
        if (StringUtils.isEmpty(type)) {
            error = null;
            return error;
        }
        error.setType(type);
        //请求地址
        if (StringUtils.isEmpty(address)) {
            error = null;
            return error;
        }
        error.setAddress(address);
        //返回内容
        if (resultVO.getCode().equals(ExceptionConstant.two)) {
            error.setMsg("成功");
        }
        else if (resultVO.getCode().equals(ExceptionConstant.five) && null != resultVO.getMessage()){
            error.setMsg(resultVO.getMessage().toString());
        }
        //入参
        if (StringUtils.isNotEmpty(param)) {
            error.setReqbody(param);
        }
        //创建时间
        error.setCreateTime(getNowDate());
        return error;
    }

    /**
     * 获取当前时间
     * @return
     */
    private String getNowDate(){
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd : hh:mm:ss");
        return dateFormat.format(date);
    }
}
